<?
namespace Site\Event
{
    class SendMail extends \Api\AjaxEvent\Listener
    {
        /**
         * Wysyła wiadomość na adres administratora
         * oraz zachowuje ją w bazie danych.
         * 
         * Przed wysłaniem następuje weryfikacja danych, czy
         * utworzony token jest identyczny z tokenem
         * zawartym w sesji.
         */
         public function __event__SendMail()
         {
             $result = array(
                'status'=>false,
                'message'=>'Wystąpił błąd podczas wysyłania wiadomości. Spróbuj ponownie za chwilę.'
             );
             
             $allowed = array('Name','mail','Message','Token');             
             if(\Api\Arrays::Exists($allowed, $this->m_param))
             {                                   
               if(\Api\Arrays::IsEmpty($allowed, $this->m_param))
               {
                    $result['message'] = 'Pozostały pola niewypełnione';
               }else{
                   if(!preg_match('/^[\_]*([a-z0-9]+(\.|\_*)?)+@([a-z][a-z0-9\-]+(\.|\-*\.))+[a-z]{2,6}$/',$this->m_param['mail']))
                   {
                        $result['message'] = 'Podany adres e-mail jest nieprawidłowy';
                   }               
                   else
                   {
                       $mail = new \Api\Mail();
                       if($mail->CompareToken($this->m_param['Token']))                              
                       {
                       
                            $xml = new \Api\Model\XML(BASE_PATH.'/public/xml/Address.xml');
                            
                            $status = $mail->Send(null,$xml->OwnerMail,$this->m_param['Message'], 'Wiadomość wygenerowana automatycznie przez serwis.','Contact',
                                array('user'=>$this->m_param['Name'],
                                      'address'=>$this->m_param['Contact']));
                            
                            if( $status )
                            {
                                $result['status'] = true;
                                $result['message']='Wiadomość została wysłana poprawnie.';                        
                            }
                       }
                   }
                }
             }                                             
             return json_encode($result);
         }
         
    }
}
?>